package main

import (
	"Apply1/ccCustomer/model"
	"Apply1/ccCustomer/service"
	"fmt"
)

//声明一个结构体
type customerView struct {
	//定义字段
	key  string //接收用户输入
	loop bool   //表示是否循环显示菜单
	//使用customerservice，需要一个字段
	customerService *service.CustomerService
}

//显示所有客户信息
func (this *customerView) list() {
	//首先获取当前所有用户（切片中）
	customer := this.customerService.List()
	//显示
	fmt.Println("---------------------------------客户列表---------------------------------")
	fmt.Println("编号\t姓名\t性别\t年龄\t电话\t地址")
	//遍历
	for i := 0; i < len(customer); i++ {
		fmt.Println(customer[i].GetInfo())
	}
	fmt.Println("---------------------------------客户列表完成------------------------------")
}

//得到用户输入，完成添加
func (this *customerView) add() {

	//显示
	fmt.Println("---------------------------------添加用户---------------------------------")
	fmt.Println("姓名：")
	name := ""
	fmt.Scanln(&name)
	fmt.Println("性别：")
	gender := ""
	fmt.Scanln(&gender)
	fmt.Println("年龄：")
	age := 0
	fmt.Scanln(&age)
	fmt.Println("电话：")
	tell := 0
	fmt.Scanln(&tell)
	fmt.Println("邮箱：")
	email := ""
	fmt.Scanln(&email)
	//构建一个新的customer实例
	customer := model.NewCustomer2(name, gender, age, tell, email)
	if this.customerService.Add(customer) {
		fmt.Println("---------------------------------添加列表完成------------------------------")
	} else {
		fmt.Println("---------------------------------添加列表失败------------------------------")
	}

}

//删除客户
func (this *customerView) delete() {
	fmt.Println("---------------------------------删除客户------------------------------")
	fmt.Println("请选择删除客户编号id（-1退出）：")
	id := -1
	fmt.Scanln(&id)
	if id == -1 {
		return
	}
	fmt.Println("确认是否删除（y/n）：")
	choice := ""
	fmt.Scanln(&choice)
	if choice == "y" || choice == "Y" {
		//调用Delete方法
		if this.customerService.Delete(id) {
			fmt.Println("---------------------------------删除完成------------------------------")

		} else {
			fmt.Println("输入id不存在，请重新输入")
		}
	}

}

//退出软件
func (this *customerView) exit() {
	fmt.Println("确认是否退出（y/n）：")
	for {
		fmt.Scanln(&this.key)
		if this.key == "Y" || this.key == "y" || this.key == "N" || this.key == "n" {
			break
		}
		fmt.Println("输入有误，请输入（y/n）")
	}
	if this.key == "Y" || this.key == "y" {
		this.loop = false
	}
}

//显示主菜单方法
func (this *customerView) mainMenu() {
	for {
		fmt.Println("\n\n-------------------------客户信息管理软件-------------------------")
		fmt.Println("                        1 添加客户")
		fmt.Println("                        2 修改客户")
		fmt.Println("                        3 删除客户")
		fmt.Println("                        4 客户列表")
		fmt.Println("                        5 退   出")
		fmt.Println()
		fmt.Printf("请选择（1-5）")
		fmt.Println()
		fmt.Scanln(&this.key)
		switch this.key {
		case "1":
			this.add()
		case "2":
			fmt.Println("修改客户")
		case "3":
			this.delete()
		case "4":
			this.list()
		case "5":
			fmt.Println("退出程序")
			this.exit()
		default:
			fmt.Println("请输入正确的数字!!!!!")
		}
		if !this.loop {
			break
		}
	}
	fmt.Println("您已经退出客户信息管理软件了，期待再次使用")
}
func main() {
	//实例化customer，显示主菜单
	customerView := customerView{
		key:  "",
		loop: true,
	}
	//这里完成对customerservice字段初始化并调用
	customerView.customerService = service.NewCustomerService()
	//显示主菜单
	customerView.mainMenu()
}
